Conversation
- Remove backup/ files from git tracking (.beads/.gitignore already excludes them) - Add .beads-credential-key to gitignore (machine-specific secret) - Add embeddeddolt/ to gitignore (auto-created runtime directory)
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughRemoved several Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Dev as Developer
participant GH as GitHub (releases & CI)
participant CI as CI matrix (6 jobs)
participant Art as Artifact Store
participant Rustler as rustler_precompiled
participant Hex as Hex\.pm
Dev->>GH: push tag matching mix\.exs (no "v")
GH->>CI: trigger release CI jobs (6 matrix entries)
CI->>Art: upload built NIF artifacts
Dev->>Rustler: run mix rustler_precompiled.download --all --ignore-unavailable
Rustler->>Art: fetch available artifacts, compute sha256 checksums
Rustler->>Dev: produce checksum-Elixir.EctoLibSql.Native.exs
Dev->>GH: commit & push checksum file
Dev->>GH: publish (remove draft) release
Dev->>Hex: mix hex.publish
Note right of GH: CI must finish and artifacts be available before checksum regen and publish
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.claude/settings.local.json:
- Line 68: The policy entry "Bash(gh api:*)" is too broad; replace this wildcard
with explicit allowed gh api patterns that enumerate only the needed endpoints
and verbs (e.g., specific repo, issues, or PR endpoints) so least-privilege is
enforced; update the settings.local.json entry (replace "Bash(gh api:*)") with a
list of narrower patterns that exactly match the gh api endpoints your tooling
uses (include HTTP verbs where supported) and remove the global wildcard.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: dee84c8e-a74b-48ea-a156-feffc08969f3
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (9)
.beads/.gitignore.beads/backup/backup_state.json.beads/backup/comments.jsonl.beads/backup/config.jsonl.beads/backup/dependencies.jsonl.beads/backup/events.jsonl.beads/backup/issues.jsonl.beads/backup/labels.jsonl.claude/settings.local.json
💤 Files with no reviewable changes (4)
- .beads/backup/backup_state.json
- .beads/backup/dependencies.jsonl
- .beads/backup/config.jsonl
- .beads/backup/labels.jsonl
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@RELEASE_PROCESS.md`:
- Line 25: Update RELEASE_PROCESS.md to use en-AU/British spelling: replace US
spellings such as "artifact" and "artifacts" with "artefact" and "artefacts"
across the file (including the sentence "This creates the tag and a draft
release. The CI workflow fires and builds all 6 NIF targets, uploading each
artifact to the release."), and similarly update any other occurrences flagged
(lines referenced) so all instances in the file follow the repository rule for
British/Australian English.
- Line 77: Update the wording that currently describes `--ignore-unavailable` as
“Safe to use during checksum generation” to restrict its scope: state that
`--ignore-unavailable` should only be used in test or recovery scenarios and not
for normal release checksum generation, and add an explicit requirement to
verify that all 6 artefacts exist (or confirm why any are intentionally missing)
before using it for checksum regeneration; reference the `--ignore-unavailable`
flag and the “checksum generation” step and mention “all 6 artefacts” so readers
know the precondition.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
There was a problem hiding this comment.
🧹 Nitpick comments (2)
RELEASE_PROCESS.md (2)
19-19: Consider adding backticks aroundmix.exsfor consistency.Other file names in the document use backticks (e.g., line 47's
checksum-Elixir.EctoLibSql.Native.exs, line 76'snative.ex). Wrappingmix.exsin backticks here would maintain consistent formatting.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@RELEASE_PROCESS.md` at line 19, Wrap mix.exs in backticks for consistency with other filenames; update the sentence that currently reads "The tag must match the version in mix.exs exactly" to use `mix.exs` (keep references to `native.ex` and the tag pattern `*.*.*` unchanged).
78-78: Optional: Add usage example for thetest_onlyworkflow option.Since the
test_onlyworkflow_dispatch input is mentioned as useful for testing, consider adding a brief example of how to invoke it (e.g., viagh workflow runor the GitHub Actions UI) to help developers use this feature.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@RELEASE_PROCESS.md` at line 78, Add a short usage example showing how to invoke the release workflow with the workflow_dispatch input test_only to skip gh release upload: mention the CLI form (gh workflow run <workflow-name> --ref <branch> with the input test_only=true via --field or equivalent) and the Actions UI form (select the workflow in GitHub Actions, click "Run workflow" and set test_only to true), so developers can quickly run the build matrix without creating a real release; reference the workflow_dispatch trigger, the test_only input, and that it skips the gh release upload step.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@RELEASE_PROCESS.md`:
- Line 19: Wrap mix.exs in backticks for consistency with other filenames;
update the sentence that currently reads "The tag must match the version in
mix.exs exactly" to use `mix.exs` (keep references to `native.ex` and the tag
pattern `*.*.*` unchanged).
- Line 78: Add a short usage example showing how to invoke the release workflow
with the workflow_dispatch input test_only to skip gh release upload: mention
the CLI form (gh workflow run <workflow-name> --ref <branch> with the input
test_only=true via --field or equivalent) and the Actions UI form (select the
workflow in GitHub Actions, click "Run workflow" and set test_only to true), so
developers can quickly run the build matrix without creating a real release;
reference the workflow_dispatch trigger, the test_only input, and that it skips
the gh release upload step.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 4438bd0a-31c2-4ebd-9bac-6af749d3f114
📒 Files selected for processing (2)
.claude/settings.local.jsonRELEASE_PROCESS.md
✅ Files skipped from review due to trivial changes (1)
- .claude/settings.local.json
Latest: Elixir 1.19.0 / OTP 28.0 Compat: Elixir 1.18.0 / OTP 27.0 (was 1.17.0 / 26.2)
Version strings now defined once in each job's matrix and referenced
via ${{ matrix.elixir }}, ${{ matrix.erlang }}, and ${{ matrix.elixir_otp }}
throughout job names, cache keys, and mise commands.
There was a problem hiding this comment.
🧹 Nitpick comments (2)
.github/workflows/ci.yml (2)
215-217: Consider addingmise.tomlhash to the compatibility mise cache key.At present, Line 215 keys only by OS/arch/version fields. Including
hashFiles('mise.toml')would keep invalidation behaviour consistent with the other mise-cached jobs.Small key hardening
- key: mise-compat-${{ runner.os }}-${{ runner.arch }}-erlang-${{ matrix.erlang }}-elixir-${{ matrix.elixir }} + key: mise-compat-${{ runner.os }}-${{ runner.arch }}-erlang-${{ matrix.erlang }}-elixir-${{ matrix.elixir }}-${{ hashFiles('mise.toml') }}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/ci.yml around lines 215 - 217, The cache key for the "mise-compat-..." cache currently only includes OS/arch/erlang/elixir identifiers; update the key generation to incorporate the mise.toml content hash (using hashFiles('mise.toml')) so cache is invalidated when mise.toml changes — specifically modify the key expression that builds "mise-compat-${{ runner.os }}-${{ runner.arch }}-erlang-${{ matrix.erlang }}-elixir-${{ matrix.elixir }}" to append or include the hashFiles('mise.toml') value, and mirror the same change (or leave restore-keys unchanged if you want broader restores) for the restore logic so behavior matches other mise-cached jobs.
189-199: Avoid split version sources in the compatibility job.
matrix.elixirandmatrix.elixir_otpcan drift over time. If they diverge, the displayed version/cache key can stop matching the runtime thatmiseactually installs.Suggested tidy-up (single source via
elixir_otp)- name: Elixir ${{ matrix.elixir }} / OTP ${{ matrix.erlang }} / ${{ matrix.os }} + name: Elixir ${{ matrix.elixir_otp }} / OTP ${{ matrix.erlang }} / ${{ matrix.os }} matrix: os: [ubuntu-latest, macos-latest] - elixir: ["1.18.0"] erlang: ["27.0"] elixir_otp: ["1.18.0-otp-27"] ... - key: ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.erlang }}-${{ hashFiles('mix.exs', '**/Cargo.toml') }} + key: ${{ runner.os }}-mix-${{ matrix.elixir_otp }}-${{ matrix.erlang }}-${{ hashFiles('mix.exs', '**/Cargo.toml') }} restore-keys: | - ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.erlang }}- + ${{ runner.os }}-mix-${{ matrix.elixir_otp }}-${{ matrix.erlang }}-Also applies to: 221-223, 240-242
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/ci.yml around lines 189 - 199, The CI matrix is using two version sources (matrix.elixir and matrix.elixir_otp) which can drift; consolidate to a single source by removing matrix.elixir and using matrix.elixir_otp as the canonical Elixir+OTP identifier (update the matrix declaration and any references that read matrix.elixir to read matrix.elixir_otp instead, e.g., the job name "Elixir ${{ matrix.elixir }} / OTP ${{ matrix.erlang }} / ${{ matrix.os }}" and any cache keys or setup steps that currently reference matrix.elixir); ensure all occurrences (including where matrix.elixir is used for displays, caching, or mise install logic) are switched to matrix.elixir_otp so the displayed/versioned value and runtime installation remain in sync.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 215-217: The cache key for the "mise-compat-..." cache currently
only includes OS/arch/erlang/elixir identifiers; update the key generation to
incorporate the mise.toml content hash (using hashFiles('mise.toml')) so cache
is invalidated when mise.toml changes — specifically modify the key expression
that builds "mise-compat-${{ runner.os }}-${{ runner.arch }}-erlang-${{
matrix.erlang }}-elixir-${{ matrix.elixir }}" to append or include the
hashFiles('mise.toml') value, and mirror the same change (or leave restore-keys
unchanged if you want broader restores) for the restore logic so behavior
matches other mise-cached jobs.
- Around line 189-199: The CI matrix is using two version sources (matrix.elixir
and matrix.elixir_otp) which can drift; consolidate to a single source by
removing matrix.elixir and using matrix.elixir_otp as the canonical Elixir+OTP
identifier (update the matrix declaration and any references that read
matrix.elixir to read matrix.elixir_otp instead, e.g., the job name "Elixir ${{
matrix.elixir }} / OTP ${{ matrix.erlang }} / ${{ matrix.os }}" and any cache
keys or setup steps that currently reference matrix.elixir); ensure all
occurrences (including where matrix.elixir is used for displays, caching, or
mise install logic) are switched to matrix.elixir_otp so the displayed/versioned
value and runtime installation remain in sync.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e1624c14-2411-465a-906f-cf579b2da8da
📒 Files selected for processing (2)
.github/workflows/ci.ymlmise.toml
✅ Files skipped from review due to trivial changes (1)
- mise.toml
- Add mise.toml hashing - Use single elixir_otp variable in compatibility job
…stream RUSTSEC-2026-0098 and RUSTSEC-2026-0099 affect rustls-webpki 0.102.x via libsql's rustls 0.22.x pin. Cannot update until libsql bumps its rustls dependency to 0.23+.
- credo 1.7.17 => 1.7.18 - rustler_precompiled 0.8.4 => 0.9.0 - stream_data 1.2.0 => 1.3.0
Summary by CodeRabbit
Chores
Documentation